#ifndef _HARDWARE_USART_INTERFACE_H_
#define _HARDWARE_USART_INTERFACE_H_

#include "../../../container/queue/Queue.h"
#include "../../../protocol/Protocol.h"
#include "../../../device/Device.h"
#include "HardwareUsart.h"
#include "../../../datapointer/DataPointer.h"



class HardwareUsartInterface //: public Protocol
{
	protected : 
		HardwareUsart usart;
		Queue<unsigned char> input;
		Queue<unsigned char> output;
	public :
		HardwareUsartInterface();//{}
		HardwareUsartInterface(HardwareUsart& u);//{}

		virtual void write(void* data, unsigned long int length);//{}
		virtual void writeByte(unsigned char data);//{}
		virtual unsigned char readByte();//{return 0;}
		virtual void* read(unsigned long int length);//{return 0;}
		virtual unsigned char full();//{return 0;}
		virtual unsigned char empty();//{return 0;}
		unsigned char inputEmpty(){return input.empty();}
		void sendInput();//{}
		void receiveOutput();//{}
		virtual void run();//{}
		virtual void config();//{}

};




#endif
